Dises Programm ist nur ein Demo. Ich nabe es haupts
chlich geschrieben, um die Verwendung der Oberfl
che zu lernen. Geben Sie dieses Programm weiter aber l
schen Sie meine Copyrightmeldung nicht. Die Erstellung diese Programms war eine Menge Arbeit
Seien Sie also lieb zu meinem Code!\
Ich wei
nicht, ob jemand mit dem Programm irgendetwas Sinnvolles machen kann.
\fc0 Daf
r garantiere ich f
r eine gewisse Fehleranf
lligkeit, ineffiziente Algorithmen and besonders Laufzeitprobleme.\
\i If you use this
\pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\fc0 program
\pard\tx960\tx3420\li360 you do it on your own risk!
\i0 \
Wenn Sie sich entscheiden, (Teile) des Sourcecodes zu verwenden, beachten Sie bitte die oben genannten Probleme und
\b (Bitte!!)
\b0 bewahren Sie meinen Name in Ihrer Copyrightmeldung. Beachten Sie bitte, da
dieser code copyright-gesch
tzt ist!\
Leider arbeite ich an einer Einzelmaschine, das n
chste Modem (oder gar ein Ethernetanschlu
) ist weit au
erhalb meiner Reichweite (finanziell). Schreiben Sie mir also, oder telefonieren Sie, wenn Sie am Sourcecode, an Updates (??) interessiert sind. Besonders aber, wenn Sie meiner Brieftasche helfen wollen!\
Wie der Name des Programms suggeriert, versucht es Objekte (beachten Sie den Unterschied zu Objective-C Objects) dreidimensional darzustellen wie wir sie jeden Tag sehen. Ich besitze zur Zeit nicht genug Einblick um einen hidden surface Algorithmus oder gar etwas Besseres zu entwickeln
Ich blieb bei einem hidden line Algorithmus. Don't boo me
das Programm zuerst eine Transformation berechnen (basierend auf verschiedene Parameter). Wenn Sie die Darstellung eines Drahtmodells selektiert haben, ist der Rest einfach: Nimm jede Gerade und zeichne sie (die Facetten werden gar nicht beachtet!). Wenn Sie die Darstellung von massiven Objekten slektiert haben, wird es kompliziert:
\pard\tx960\tx1620\tx2320\li360 f
\pard\tx960\tx3420\li360
\pard\tx960\tx1620\tx2320\li360 r
\pard\tx960\tx3420\li360 jede
\pard\tx960\tx1620\tx2320\li360
\pard\tx960\tx3420\li360 Gerade
\pard\tx960\tx1620\tx2320\li360 :\
r jede Facette:\
\li2320 schaue, ob die Facette einen Teil der Geraden abdeckt Wenn dem so ist, markieren den Teil\
\li360 zeichne die (Teile der) Geraden\
\pard\tx960\tx3420\li360 \
tzliche Probleme treten auf, wenn man mehrere Objekte, mehrere Fenater etc erlaubt.\
Der Algorithmus sollte mehrfach unterbrochene Linien (denke an Zinnen) richtig darstellen k
nnen.\
Beachten Sie, da
dieses Programm keinerlei
berpr
fung der Daten vornimmt. Die Richtigkeit der Daten ist von gro
er Bedeutung, da sonst das Ergebnis im besten Fall ein Haufen Bl
dsinn ist. Ich habe das Programm rasch "aus dem
rmel gesch
ttelt"
ich hatte nicht genug Zeit alle Fehler zu finden.\
\pard\tx960\tx3420\li360 (i.e. one window). It will be added a support for multiple windows.\
\b ObjStorage class\
\b0 This Object stores a list of an array of a struct containing ids pointing to the arrays of Punkte (points; a
\fc0 Storage containing the coordinates of the points), Geraden (lines; a Storage containing the indices of 2 points each), Facetten (facettes; a D2Storage containing
\pard\tx1140\tx2300\tx3440\tx4600\tx5760\tx6900\tx8060\tx9200\tx10360\tx11520\fc0 indices
\pard\tx960\tx3420\li360\fc0 of lines), ZweiDim (a Storage containing the transformed coordinates of the points) and a name. To do so it uses a Storage object.\
Additionally it is able to manage a selection: The transformation and display modules like to see only a single array of points, lines and facettes regardless of the selection by the User (He can do so in the Inspector). The difficulty lies in the dealing with 'holes' in the selection and the need to update the indices.\
\pard\tx960\tx3420\li360 Objects. Note the ease of doing so!\
\b ResultView class\
\b0 This is used to display the results. Includes the hidden lines algorithm.\
BildebeneView class\
\b0 This is used to select the viewing direction.\
\b ProjectType class\
\b0 This controls the panel to select the type of the projection.\
\b ProjectBer class\
\b0 Does the real calculation.\
\b Inspector class\
\b0 This is the controller of the Inspectors. It uses
\f3 .nib
\f0 files like the IB. It also uses NiftyMatrix and NiftyMatrixCell classes for the ScrollView to select the object.\
\b InspectorObject class\
InspectorPunkte class
\b0 \
\b InspectorGeraden class
\b0 \
\b InspectorFacetten class\
\b0 used by Inspector to inspect various things.\
\b InspectorMove class
\b0 \
\b InspectorScale class
\b0 \
\b InspectorRotate class\
\b0 same as above but allows multiple selection.\
InspectorNoAvail class\
\b0 What would you think?\
NiftyMatrix class (stolen from ScrollDoodScroll)
\b0 \
The NiftyMatrix class differs from the Matrix class in that a NiftyMatrix allows the user to rearrange cells, as InterfaceBuilder lets you do with menu items. If a user control-clicks on a cell, that cell will follow the mouse as the user drags it, leaving a
in its place. When the user releases the cell over another cell in the matrix, the NiftyMatrix places the control-dragged cell in that location and slides the other cells up or down in order to fill the vacant spot. \
Has to be added a connection to the objects themselves. (StoreObject)\
\b NiftyMatrixCell class (stolen from ScrollDoodScroll: CustomCell)
\b0 \
The CustomCell class demonstrates how, by overriding the
\f3 drawInside:inView:
\f0 method, you can display graphics and/or text at different locations within the cell. CustomCells place a TIFF image at the cell's left-hand side, followed by a right-justified, dark-gray number, followed by a text string.\
\b LanguageApp class (stolen from Mandelbrot)
\b0 \
Marvellous! See there! Should be standard in Version 3.0. (Some addings are needed for soundfiles)\
\b Interesting Stuff
\b0 \
ObjStorage class\
\pard\tx1280\tx3420\li960\fc0 How to manage a selection reindexing the database.
\pard\tx960\tx3420\li360\fc0 \
CustomCell\
\pard\tx1280\tx3420\li960 How to draw whatever you want within a cell\
\pard\tx960\tx3420\li360 \
Inspector\
\pard\tx1280\tx3420\li960 How to load .nib files and how to change subviews.\
\pard\tx960\tx3420\li360 \
NiftyMatrix\
\pard\tx1280\tx3420\li960 How to implement autoscrolling\